{
 "metadata": {
  "name": "",
  "signature": "sha256:1f6658f936ea11d7c0634d405f727bf459a4026de9f44acdee87a4890d62d623"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "%load_ext watermark"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 1
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "%watermark -d -a \"Sebastian Raschka\" -v -p scikit-learn,numpy,matplotlib"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Sebastian Raschka 02/10/2014 \n",
        "\n",
        "CPython 3.4.1\n",
        "IPython 2.0.0\n",
        "\n",
        "scikit-learn 0.15.2\n",
        "numpy 1.9.0\n",
        "matplotlib 1.4.0\n"
       ]
      }
     ],
     "prompt_number": 2
    },
    {
     "cell_type": "heading",
     "level": 1,
     "metadata": {},
     "source": [
      "Receiver Operator Characteristic"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "%matplotlib inline"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 3
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "import numpy as np\n",
      "import matplotlib.pyplot as plt\n",
      "from sklearn import svm, datasets\n",
      "from sklearn.cross_validation import train_test_split\n",
      "from sklearn.metrics import roc_curve, auc\n",
      "\n",
      "random_state = np.random.RandomState(0)\n",
      "\n",
      "# Import some data to play with\n",
      "iris = datasets.load_iris()\n",
      "X = iris.data\n",
      "y = iris.target\n",
      "\n",
      "# Make it a binary classification problem by removing the third class\n",
      "X, y = X[y != 2], y[y != 2]\n",
      "n_samples, n_features = X.shape\n",
      "\n",
      "# Add noisy features to make the problem harder\n",
      "X = np.c_[X, random_state.randn(n_samples, 200 * n_features)]\n",
      "\n",
      "# shuffle and split training and test sets\n",
      "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.5,\n",
      "                                                    random_state=123)\n",
      "\n",
      "# Run classifier\n",
      "classifier = svm.SVC(kernel='linear', probability=True)\n",
      "probas_ = classifier.fit(X_train, y_train).predict_proba(X_test)\n",
      "\n",
      "# Compute ROC curve and area the curve\n",
      "fpr, tpr, thresholds = roc_curve(y_test, probas_[:, 1])\n",
      "roc_auc = auc(fpr, tpr)\n",
      "\n",
      "# Plot ROC curve\n",
      "\n",
      "fig = plt.figure(figsize=(7,5))\n",
      "ax = fig.add_subplot(111)\n",
      "\n",
      "plt.plot(fpr, tpr, color='lightblue', lw=2, label='ROC curve')\n",
      "plt.plot([0, 1], [0, 1], color='black', lw=2, linestyle='dotted', label='random guessing')\n",
      "plt.xlim([0.0, 1.0])\n",
      "plt.ylim([0.0, 1.0])\n",
      "plt.xlabel('False Positive Rate')\n",
      "plt.ylabel('True Positive Rate')\n",
      "plt.title('Receiver operating characteristic (ROC)')\n",
      "plt.legend(loc=\"lower right\")\n",
      "ax.annotate('AUC = %0.2f' %roc_auc, xy=(0.35, 0.6))\n",
      "plt.show()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\nBdFbIAUdchkAAAAASUVORK5CYII=\n",
       "text": [
        "<matplotlib.figure.Figure at 0x108139550>"
       ]
      }
     ],
     "prompt_number": 5
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [],
     "language": "python",
     "metadata": {},
     "outputs": []
    }
   ],
   "metadata": {}
  }
 ]
}